9x9 Hidden Singles.txt
Order 3: digits 9; houses 27, cells 81.
Grid.grid1: initial copying
pending={a3, a5, a6, b4, c1, c2, c3, d2, d5, d7, d8, e4, f2, f7, f9, g7, g9, h2, h3, h6, i3, i4, i5}
deduce.grid1: naked-singles
deduce.grid1: hidden-singles
deduce.grid1.col3. g3 is 1 by hidden-single.
pending={g3}
deduce.grid1: naked-singles
deduce.grid1: hidden-singles
deduce.grid1.col4. g4 is 2 by hidden-single.
pending={g4}
deduce.grid1: naked-singles
deduce.grid1: hidden-singles
deduce.grid1: naked-pairs
two's heap=d4 {3|4}, c4 {4|5}, g5 {5|6}, g6 {5|6}, h7 {7|8}.
Naked-pair {5|6} in cells {g5, g6} contained within {rowg, box8}, updating cells {g1, g2, g8, h4, h5, i6}:
- g8: {5|7|8|9} → {7|8|9}.
- h4: {1|3|4|5} → {1|3|4}.
- h5: {1|4|5} → {1|4}.
- i6: {1|3|4|6} → {1|3|4}.
grid1
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
|
|
| 9
|
| 3
| 2
|
|
|
|
| b
|
|
|
| 7
|
|
|
|
|
|
| c
| 1
| 6
| 2
|
|
|
|
|
|
|
| d
|
| 1
|
|
| 2
|
| 5
| 6
|
|
| e
|
|
|
| 9
|
|
|
|
|
|
| f
|
| 5
|
|
|
|
| 1
|
| 7
|
| g
|
|
| 1
| 2
|
|
| 4
|
| 3
|
| h
|
| 2
| 6
|
|
| 9
|
|
|
|
| i
|
|
| 5
| 8
| 7
|
|
|
|
|
backtrack.grid1 → grid2: c4 guess 4 ∈ {4|5}
pending={c4}
deduce.grid2: naked-singles
- d4 is 3 by naked-single.
pending={d4}
- f4 is 6 by naked-single.
pending={f4}
- h4 is 1 by naked-single.
pending={h4}
- a4 is 5 by naked-single.
pending={a4}
- c6 is 8 by naked-single.
pending={c6}
- c5 is 9 by naked-single.
pending={c5}
- c9 is 5 by naked-single.
pending={c9}
- f6 is 4 by naked-single.
pending={f6}
- d6 is 7 by naked-single.
pending={d6}
- f5 is 8 by naked-single.
pending={f5}
- f3 is 3 by naked-single.
pending={f3}
- h5 is 4 by naked-single.
pending={h5}
- h9 is 8 by naked-single.
pending={h9}
- h7 is 7 by naked-single.
pending={h7}
- c7 is 3 by naked-single.
pending={c7}
- c8 is 7 by naked-single.
pending={c8}
- g8 is 9 by naked-single.
pending={g8}
- f8 is 2 by naked-single.
pending={f8}
- e7 is 8 by naked-single.
pending={e7}
- a7 is 6 by naked-single.
pending={a7}
- e9 is 4 by naked-single.
pending={e9}
- a9 is 1 by naked-single.
pending={a9}
- d9 is 9 by naked-single.
pending={d9}
- b9 is 2 by naked-single.
pending={b9}
- b7 is 9 by naked-single.
pending={b7}
- e2 is 7 by naked-single.
pending={e2}
grid2 didn't work: naked-singles ran out of candidates.
…backtrack.grid1 again
backtrack.grid1 → grid3: c4 guess 5 ∈ {4|5}
pending={c4}
deduce.grid3: naked-singles
deduce.grid3: hidden-singles
deduce.grid3: naked-pairs
two's heap=h5 {1|4}, d4 {3|4}, g5 {5|6}, c6 {4|8}, g6 {5|6}, h7 {7|8}.
Naked-pair {5|6} in cells {g5, g6} contained within {rowg, box8}, updating cells {g1, g2, g8, h4, h5, i6}:
grid3
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
|
|
| 9
|
| 3
| 2
|
|
|
|
| b
|
|
|
| 7
|
|
|
|
|
|
| c
| 1
| 6
| 2
| 5
|
|
|
|
|
|
| d
|
| 1
|
|
| 2
|
| 5
| 6
|
|
| e
|
|
|
| 9
|
|
|
|
|
|
| f
|
| 5
|
|
|
|
| 1
|
| 7
|
| g
|
|
| 1
| 2
|
|
| 4
|
| 3
|
| h
|
| 2
| 6
|
|
| 9
|
|
|
|
| i
|
|
| 5
| 8
| 7
|
|
|
|
|
backtrack.grid3 → grid4: c6 guess 4 ∈ {4|8}
pending={c6}
deduce.grid4: naked-singles
deduce.grid4: hidden-singles
deduce.grid4: naked-pairs
two's heap=i6 {1|3}, h5 {1|4}, d4 {3|4}, a4 {1|6}, g5 {5|6}, c9 {8|9}, g6 {5|6}, c5 {8|9}, h7 {7|8}.
Naked-pair {5|6} in cells {g5, g6} contained within {rowg, box8}, updating cells {g1, g2, g8, h4, h5, i6}:
Naked-pair {8|9} in cells {c5, c9} contained within {rowc}, updating cells {c7, c8}:
- c7: {3|7|8|9} → {3|7}.
- c8: {3|7|8|9} → {3|7}.
grid4
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
|
|
| 9
|
| 3
| 2
|
|
|
|
| b
|
|
|
| 7
|
|
|
|
|
|
| c
| 1
| 6
| 2
| 5
|
| 4
|
|
|
|
| d
|
| 1
|
|
| 2
|
| 5
| 6
|
|
| e
|
|
|
| 9
|
|
|
|
|
|
| f
|
| 5
|
|
|
|
| 1
|
| 7
|
| g
|
|
| 1
| 2
|
|
| 4
|
| 3
|
| h
|
| 2
| 6
|
|
| 9
|
|
|
|
| i
|
|
| 5
| 8
| 7
|
|
|
|
|
backtrack.grid4 → grid5: a4 guess 1 ∈ {1|6}
pending={a4}
deduce.grid5: naked-singles
deduce.grid5: hidden-singles
deduce.grid5.col4. f4 is 6 by hidden-single.
pending={f4}
deduce.grid5: naked-singles
deduce.grid5: hidden-singles
deduce.grid5.rowe. e1 is 6 by hidden-single.
pending={e1}
deduce.grid5: naked-singles
deduce.grid5: hidden-singles
deduce.grid5.col1. f1 is 2 by hidden-single.
pending={f1}
deduce.grid5: naked-singles
deduce.grid5: hidden-singles
deduce.grid5.rowf. f8 is 9 by hidden-single.
pending={f8}
deduce.grid5: naked-singles
deduce.grid5: hidden-singles
deduce.grid5.rowd. d1 is 9 by hidden-single.
pending={d1}
deduce.grid5: naked-singles
deduce.grid5: hidden-singles
deduce.grid5.rowg. g2 is 9 by hidden-single.
pending={g2}
deduce.grid5: naked-singles
deduce.grid5: hidden-singles
deduce.grid5: naked-pairs
two's heap=i8 {1|2}, i6 {1|3}, d4 {3|4}, i1 {3|4}, h5 {1|4}, c7 {3|7}, h4 {3|4}, f6 {3|8}, i2 {3|4}, c8 {3|7}, g1 {7|8}, b6 {6|8}, g8 {7|8}, d9 {4|8}, g6 {5|6}, c5 {8|9}, h7 {7|8}, f5 {4|8}, g5 {5|6}, c9 {8|9}.
Naked-pair {3|4} in cells {d4, h4, i1, i2} contained within {rowi, col4, box7}, updating cells {g1, h1, i6, i7, i8, i9}:
- h1: {3|4|7|8} → {7|8}.
- i6: {1|3} → {1}. Solved.
Naked-pair {5|6} in cells {g5, g6} contained within {rowg, box8}, updating cells {g1, g8, h4, h5, i6}:
Naked-pair {3|7} in cells {c7, c8} contained within {rowc, box3}, updating cells {a7, a8, a9, b7, b8, b9, c5, c9}:
- a7: {6|7|8} → {6|8}.
- a8: {4|5|7|8} → {4|5|8}.
- b7: {2|3|6|8|9} → {2|6|8|9}.
- b8: {1|2|3|4|5|8} → {1|2|4|5|8}.
Naked-pair {7|8} in cells {g1, g8, h7} contained within {rowg, box9}, updating cells {g5, g6, h8, h9, i7, i8, i9}:
- h8: {1|5|7|8} → {1|5}.
- h9: {1|5|8} → {1|5}.
Naked-pair {8|9} in cells {c5, c9} contained within {rowc}, updating cells {c7, c8}:
pending={i6}
deduce.grid5: naked-singles
- h5 is 4 by naked-single.
pending={h5}
- f5 is 8 by naked-single.
pending={f5}
- c5 is 9 by naked-single.
pending={c5}
- b5 is 6 by naked-single.
pending={b5}
- b6 is 8 by naked-single.
pending={b6}
- c9 is 8 by naked-single.
pending={c9}
- a7 is 6 by naked-single.
pending={a7}
- d9 is 4 by naked-single.
pending={d9}
- a9 is 5 by naked-single.
pending={a9}
- a8 is 4 by naked-single.
pending={a8}
- d4 is 3 by naked-single.
pending={d4}
- d6 is 7 by naked-single.
pending={d6}
- d3 is 8 by naked-single.
pending={d3}
- e6 is 5 by naked-single.
pending={e6}
- e5 is 1 by naked-single.
pending={e5}
- e9 is 2 by naked-single.
pending={e9}
grid5 didn't work: naked-singles ran out of candidates.
…backtrack.grid4 again
backtrack.grid4 → grid6: a4 guess 6 ∈ {1|6}
pending={a4}
deduce.grid6: naked-singles
deduce.grid6: hidden-singles
deduce.grid6.col4. h4 is 1 by hidden-single.
pending={h4}
deduce.grid6: naked-singles
- h5 is 4 by naked-single.
pending={h5}
- i6 is 3 by naked-single.
pending={i6}
deduce.grid6: hidden-singles
deduce.grid6.rowh. h1 is 3 by hidden-single.
pending={h1}
deduce.grid6: naked-singles
deduce.grid6: hidden-singles
deduce.grid6: naked-pairs
two's heap=d4 {3|4}, f4 {3|4}, g5 {5|6}, c8 {3|7}, b6 {1|8}, g6 {5|6}, h9 {5|8}, d6 {7|8}, a7 {7|8}, f5 {6|8}, f6 {6|8}, c9 {8|9}, c7 {3|7}, c5 {8|9}, h7 {7|8}, i1 {4|9}, i2 {4|9}.
Naked-pair {3|4} in cells {d4, f4} contained within {col4, box5}, updating cells {d6, e5, e6, f5, f6}:
Naked-pair {5|6} in cells {g5, g6} contained within {rowg, box8}, updating cells {g1, g2, g8}:
Naked-pair {3|7} in cells {c7, c8} contained within {rowc, box3}, updating cells {a7, a8, a9, b7, b8, b9, c5, c9}:
- a7: {7|8} → {8}. Solved.
- a8: {1|4|5|7|8} → {1|4|5|8}.
- b7: {2|3|6|8|9} → {2|6|8|9}.
- b8: {1|2|3|4|5|8|9} → {1|2|4|5|8|9}.
Naked-pair {4|9} in cells {i1, i2} contained within {rowi, box7}, updating cells {g1, g2, i7, i8, i9}:
- g1: {7|8|9} → {7|8}.
- g2: {7|8|9} → {7|8}.
- i7: {2|6|9} → {2|6}.
- i8: {1|2|9} → {1|2}.
- i9: {1|2|6|9} → {1|2|6}.
Naked-pair {8|9} in cells {c5, c9} contained within {rowc}, updating cells {c7, c8}:
pending={a7}
deduce.grid6: naked-singles
- c9 is 9 by naked-single.
pending={c9}
- c5 is 8 by naked-single.
pending={c5}
- b6 is 1 by naked-single.
pending={b6}
- b5 is 9 by naked-single.
pending={b5}
- f5 is 6 by naked-single.
pending={f5}
- f6 is 8 by naked-single.
pending={f6}
- d6 is 7 by naked-single.
pending={d6}
- e6 is 5 by naked-single.
pending={e6}
- e5 is 1 by naked-single.
pending={e5}
- g5 is 5 by naked-single.
pending={g5}
- g6 is 6 by naked-single.
pending={g6}
- h7 is 7 by naked-single.
pending={h7}
- c7 is 3 by naked-single.
pending={c7}
- c8 is 7 by naked-single.
pending={c8}
- e7 is 2 by naked-single.
pending={e7}
- b7 is 6 by naked-single.
pending={b7}
grid6 didn't work: naked-singles ran out of candidates.
…backtrack.grid4 again
grid4 didn't work: exhaustive search revealed no solution.
…backtrack.grid3 again
backtrack.grid3 → grid7: c6 guess 8 ∈ {4|8}
pending={c6}
deduce.grid7: naked-singles
deduce.grid7: hidden-singles
deduce.grid7: naked-pairs
two's heap=h5 {1|4}, g5 {5|6}, d4 {3|4}, c9 {4|9}, g6 {5|6}, c5 {4|9}, h7 {7|8}.
Naked-pair {5|6} in cells {g5, g6} contained within {rowg, box8}, updating cells {g1, g2, g8, h4, h5, i6}:
Naked-pair {4|9} in cells {c5, c9} contained within {rowc}, updating cells {c7, c8}:
- c7: {3|7|9} → {3|7}.
- c8: {3|4|7|9} → {3|7}.
grid7
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
|
|
| 9
|
| 3
| 2
|
|
|
|
| b
|
|
|
| 7
|
|
|
|
|
|
| c
| 1
| 6
| 2
| 5
|
| 8
|
|
|
|
| d
|
| 1
|
|
| 2
|
| 5
| 6
|
|
| e
|
|
|
| 9
|
|
|
|
|
|
| f
|
| 5
|
|
|
|
| 1
|
| 7
|
| g
|
|
| 1
| 2
|
|
| 4
|
| 3
|
| h
|
| 2
| 6
|
|
| 9
|
|
|
|
| i
|
|
| 5
| 8
| 7
|
|
|
|
|
backtrack.grid7 → grid8: c5 guess 4 ∈ {4|9}
pending={c5}
deduce.grid8: naked-singles
- c9 is 9 by naked-single.
pending={c9}
- h5 is 1 by naked-single.
pending={h5}
deduce.grid8: hidden-singles
deduce.grid8.rowb. b5 is 9 by hidden-single.
pending={b5}
deduce.grid8: naked-singles
deduce.grid8: hidden-singles
deduce.grid8.rowd. d1 is 9 by hidden-single.
pending={d1}
deduce.grid8: naked-singles
deduce.grid8: hidden-singles
deduce.grid8.rowe. e6 is 1 by hidden-single.
pending={e6}
deduce.grid8: naked-singles
- b6 is 6 by naked-single.
pending={b6}
- a4 is 1 by naked-single.
pending={a4}
- g6 is 5 by naked-single.
pending={g6}
- g5 is 6 by naked-single.
pending={g5}
- f5 is 8 by naked-single.
pending={f5}
- e5 is 5 by naked-single.
pending={e5}
deduce.grid8: hidden-singles
deduce.grid8.rowe. e1 is 6 by hidden-single.
pending={e1}
deduce.grid8: naked-singles
deduce.grid8: hidden-singles
deduce.grid8.rowf. f4 is 6 by hidden-single.
deduce.grid8.rowf. f8 is 9 by hidden-single.
pending={f4, f8}
deduce.grid8: naked-singles
deduce.grid8: hidden-singles
deduce.grid8.rowf. f1 is 2 by hidden-single.
pending={f1}
deduce.grid8: naked-singles
deduce.grid8: hidden-singles
deduce.grid8.rowg. g2 is 9 by hidden-single.
pending={g2}
deduce.grid8: naked-singles
deduce.grid8: hidden-singles
deduce.grid8.rowi. i7 is 9 by hidden-single.
pending={i7}
deduce.grid8: naked-singles
deduce.grid8: hidden-singles
deduce.grid8.rowi. i9 is 6 by hidden-single.
pending={i9}
deduce.grid8: naked-singles
deduce.grid8: hidden-singles
deduce.grid8.rowa. a7 is 6 by hidden-single.
pending={a7}
deduce.grid8: naked-singles
deduce.grid8: hidden-singles
grid8 didn't work: more than one hidden-candidate in cell 79.
…backtrack.grid7 again
backtrack.grid7 → grid9: c5 guess 9 ∈ {4|9}
pending={c5}
deduce.grid9: naked-singles
- c9 is 4 by naked-single.
pending={c9}
deduce.grid9: hidden-singles
deduce.grid9: naked-pairs
two's heap=h5 {1|4}, d4 {3|4}, g5 {5|6}, c8 {3|7}, e9 {2|8}, c7 {3|7}, g6 {5|6}, d9 {8|9}, h7 {7|8}.
Naked-pair {5|6} in cells {g5, g6} contained within {rowg, box8}, updating cells {g1, g2, g8, h4, h5, i6}:
Naked-pair {3|7} in cells {c7, c8} contained within {rowc, box3}, updating cells {a7, a8, a9, b7, b8, b9}:
- a7: {6|7|8} → {6|8}.
- a8: {1|5|7|8} → {1|5|8}.
- b7: {2|3|6|8|9} → {2|6|8|9}.
- b8: {1|2|3|5|8|9} → {1|2|5|8|9}.
grid9
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
|
|
| 9
|
| 3
| 2
|
|
|
|
| b
|
|
|
| 7
|
|
|
|
|
|
| c
| 1
| 6
| 2
| 5
| 9
| 8
|
|
| 4
|
| d
|
| 1
|
|
| 2
|
| 5
| 6
|
|
| e
|
|
|
| 9
|
|
|
|
|
|
| f
|
| 5
|
|
|
|
| 1
|
| 7
|
| g
|
|
| 1
| 2
|
|
| 4
|
| 3
|
| h
|
| 2
| 6
|
|
| 9
|
|
|
|
| i
|
|
| 5
| 8
| 7
|
|
|
|
|
backtrack.grid9 → grid10: a7 guess 6 ∈ {6|8}
pending={a7}
deduce.grid10: naked-singles
deduce.grid10: hidden-singles
deduce.grid10.rowi. i9 is 6 by hidden-single.
pending={i9}
deduce.grid10: naked-singles
deduce.grid10: hidden-singles
deduce.grid10.col4. f4 is 6 by hidden-single.
pending={f4}
deduce.grid10: naked-singles
deduce.grid10: hidden-singles
deduce.grid10.rowe. e1 is 6 by hidden-single.
pending={e1}
deduce.grid10: naked-singles
deduce.grid10: hidden-singles
deduce.grid10.col1. f1 is 2 by hidden-single.
pending={f1}
deduce.grid10: naked-singles
deduce.grid10: hidden-singles
deduce.grid10.rowf. f8 is 9 by hidden-single.
pending={f8}
deduce.grid10: naked-singles
- d9 is 8 by naked-single.
pending={d9}
- e9 is 2 by naked-single.
pending={e9}
- e7 is 3 by naked-single.
pending={e7}
- c7 is 7 by naked-single.
pending={c7}
- c8 is 3 by naked-single.
pending={c8}
- e8 is 4 by naked-single.
pending={e8}
- h7 is 8 by naked-single.
pending={h7}
- g8 is 7 by naked-single.
pending={g8}
deduce.grid10: hidden-singles
deduce.grid10.rowd. d1 is 9 by hidden-single.
pending={d1}
deduce.grid10: naked-singles
- g1 is 8 by naked-single.
pending={g1}
- g2 is 9 by naked-single.
pending={g2}
deduce.grid10: hidden-singles
deduce.grid10.rowh. h1 is 7 by hidden-single.
pending={h1}
deduce.grid10: naked-singles
deduce.grid10: hidden-singles
deduce.grid10.rowa. a2 is 7 by hidden-single.
pending={a2}
deduce.grid10: naked-singles
- e2 is 8 by naked-single.
pending={e2}
- e3 is 7 by naked-single.
pending={e3}
deduce.grid10: hidden-singles
deduce.grid10.rowa. a8 is 8 by hidden-single.
pending={a8}
deduce.grid10: naked-singles
deduce.grid10: hidden-singles
deduce.grid10.rowb. b3 is 8 by hidden-single.
pending={b3}
deduce.grid10: naked-singles
deduce.grid10: hidden-singles
deduce.grid10.rowd. d6 is 7 by hidden-single.
pending={d6}
deduce.grid10: naked-singles
deduce.grid10: hidden-singles
deduce.grid10.rowf. f5 is 8 by hidden-single.
pending={f5}
deduce.grid10: naked-singles
deduce.grid10: hidden-singles
deduce.grid10.rowh. h4 is 3 by hidden-single.
pending={h4}
deduce.grid10: naked-singles
- d4 is 4 by naked-single.
pending={d4}
- a4 is 1 by naked-single.
pending={a4}
- a9 is 5 by naked-single.
pending={a9}
- a1 is 4 by naked-single.
pending={a1}
- b2 is 3 by naked-single.
pending={b2}
- b1 is 5 by naked-single.
pending={b1}
- d3 is 3 by naked-single.
pending={d3}
- f3 is 4 by naked-single.
pending={f3}
- f6 is 3 by naked-single.
pending={f6}
- h9 is 1 by naked-single.
pending={h9}
- b9 is 9 by naked-single.
pending={b9}
- b7 is 2 by naked-single.
pending={b7}
- b8 is 1 by naked-single.
pending={b8}
- h5 is 4 by naked-single.
pending={h5}
- b5 is 6 by naked-single.
pending={b5}
- b6 is 4 by naked-single.
pending={b6}
- g5 is 5 by naked-single.
pending={g5}
- e5 is 1 by naked-single.
pending={e5}
- e6 is 5 by naked-single.
pending={e6}
- g6 is 6 by naked-single.
pending={g6}
- h8 is 5 by naked-single.
pending={h8}
- i1 is 3 by naked-single.
pending={i1}
- i2 is 4 by naked-single.
pending={i2}
- i6 is 1 by naked-single.
pending={i6}
- i7 is 9 by naked-single.
pending={i7}
- i8 is 2 by naked-single.
pending={i8}
deduce.grid10. Solved.
grid10
|
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
|
| a
| 4
| 7
| 9
| 1
| 3
| 2
| 6
| 8
| 5
|
| b
| 5
| 3
| 8
| 7
| 6
| 4
| 2
| 1
| 9
|
| c
| 1
| 6
| 2
| 5
| 9
| 8
| 7
| 3
| 4
|
| d
| 9
| 1
| 3
| 4
| 2
| 7
| 5
| 6
| 8
|
| e
| 6
| 8
| 7
| 9
| 1
| 5
| 3
| 4
| 2
|
| f
| 2
| 5
| 4
| 6
| 8
| 3
| 1
| 9
| 7
|
| g
| 8
| 9
| 1
| 2
| 5
| 6
| 4
| 7
| 3
|
| h
| 7
| 2
| 6
| 3
| 4
| 9
| 8
| 5
| 1
|
| i
| 3
| 4
| 5
| 8
| 7
| 1
| 9
| 2
| 6
|
grid10. Copying solution to raw grid.